/******************************************************************************************
文件名：data_process_handle.c
作者：狼狼    版本：V1.0    创建日期：2021.9.10
文件描述：
    内部指令处理回调。
历史修改记录：
1. 2021-9-10:V1.0 狼狼
创建。
2. 2022-5-11:V1.0 狼狼
代码公开。
******************************************************************************************/
//+------------------------------------------------------------------------------------------+
//|                                          文件说明
//+------------------------------------------------------------------------------------------+
//|      [注意]本文件中所有回调必须为非阻塞执行，且需要尽快返回。
//|      [补充]对从内部数据中传递的具体类型，由设计者决定如何处理，处理结束后，需要手动将其指
//|  向的空间做释放。
//|      当需要增加处理回调时，按照以下步骤进行：
//|  1. 在数据记录表中增加对数据的记录项，以接收来自TCP的数据消息；
//|  2. 在本文件中增加数据处理回调函数，并声明到同名头文件中；
//|  3. 更新数据记录表中对应的回调函数记录字段；
//|  4. 实现其它必要的功能。
//+------------------------------------------------------------------------------------------+
//|                                         头文件包含
//+------------------------------------------------------------------------------------------+
/*|*/#include <stdio.h>
/*|*/#include <string.h>
/*|*/#include <stdlib.h>
/*|*/#include <stdint.h>
//|
/*|*/#include "data_process_handle.h"
/*|*/#include "data_reg_table.h"
/*|*/#include "project_debug.h"
//+------------------------------------------------------------------------------------------+
//|                                          全局变量
//+------------------------------------------------------------------------------------------+
//|    ----------------------------------------
//|    数据记录表
//|    [说明]数据记录表用于内部可处理数据类型注
//|          册，解析器数据处理线程将访问该表以
//|          决定执行何种回调函数处理收到的数据。
//|          若在记录表中未找到匹配的处理方法，
//|          收到的数据将被忽略。
//|    ----------------------------------------
/*|*/ST_DATA_REG_TABLE data_reg_table[] = 
/*|*/{
/*|*/    {DATA_NORMAL, 1, data_1_1_handle}, // H264-720P@30视频流数据
//|
/*|*/    {DATA_RESERVED, 0, NULL} /* 用于判定结尾的记录项 */
/*|*/};
//|
/*|*/#ifdef SAVE_STREAM_TO_FILE
/*|*/   extern FILE* pFile;
/*|*/#endif
//+------------------------------------------------------------------------------------------+
//|  回调函数名称：data_1_1_handle
//|  功能描述：接收并处理H264-720P@30视频流数据
//|  备注：
//+------------------------------------------------------------------------------------------+
void data_1_1_handle(ST_INTERNAL_DATA internal_data)
{
    printf("[DATA-HANDLE][Session ID:%d][Seq:%d]Recv data[ID:%d - Value:%d][No.%d][%d]\n",
                                                            internal_data.session_id,
                                                            internal_data.msg_seq,
                                                            internal_data.data_type,
                                                            internal_data.data_type_value,
                                                            internal_data.data_seq,
                                                            internal_data.data_length);
#ifdef SAVE_STREAM_TO_FILE
    fwrite(internal_data.pdata, internal_data.data_length, 1, pFile);
    fflush(pFile);
#endif
    
    /* 需要释放数据所占内存 */
    if(internal_data.pdata)free(internal_data.pdata);
}
